import { useSocketStore } from '@/store/useSocket'
import { useUserStore } from '@/store/useUser'

export default defineNuxtPlugin((nuxtApp) => {
    const socketStore = useSocketStore()
    const userStore = useUserStore()

    // 在客户端初始化 socket
    if (process.client && userStore.getToken) {
        socketStore.initSocket()

        // 页面关闭时断开连接
        window.onbeforeunload = () => {
            socketStore.disconnect()
        }
    }

    nuxtApp.hook('page:start', () => {
        const token = userStore.getToken

        if (process.client) {
            if (token && !socketStore.isConnected) {
                socketStore.initSocket()
            }
            if (!token) {
                socketStore.socket?.disconnect()
            }
        }
    })

    return {
        provide: {
            socketStore
        }
    }
})